﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace Elegant.Telas.Controles
{
    class LogTicketManager
    {
        private LogTicket logTicket;
        private FileManager fm;

        public LogTicketManager()
        {
           
            this.logTicket = new LogTicket(Thread.CurrentThread.CurrentUICulture.ToString());
            
        }

        /// <summary>
        /// Cria e abre um arquivo de log
        /// </summary>
        /// <param name="filePath">caminho do arquivo</param>
        public void createAndOpenLogFile(string filePath){
            
            this.fm = new FileManager();
            fm.createAndOpenWriteFile(filePath);
        }

        /// <summary>
        /// Escreve o log de ticket válido no arquivo e retorna a mensagem de log escrita.
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de mensagem de log de ticket válido</returns>
        public string putValidTicketLog(string ticketName)
        {
            string message = logTicket.getValidTicketLog(ticketName);
            this.fm.writeFile(message);
            return message;
        }

        /// <summary>
        /// Escreve o log de ticket inválido no arquivo e retorna a mensagem de log escrita.
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de mensagem de log de ticket inválido</returns>
        public string putInvalidTicketLog(string ticketName) {
            string message = logTicket.getInvalidTicketLog(ticketName);
            this.fm.writeFile(message);
            return message;
        }

        /// <summary>
        /// Escreve o log de ticket atualizado no arquivo e retorna a mensagem de log escrita.
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de mensagem de log de ticket atualizado</returns>
        public string putUpdatedTicketLog(string ticketName)
        {
            string message = logTicket.getUpdatedTicketLog(ticketName);
            this.fm.writeFile(message);
            return message;
        }

        /// <summary>
        /// Escreve o log de ticket não atualizado no arquivo e retorna a mensagem de log escrita.
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de mensagem de log de ticket não atualizado</returns>
        public string putNotUpdatedTicketLog(string ticketName)
        {
            string message = logTicket.getNotUpdatedTicketLog(ticketName);
            this.fm.writeFile(message);
            return message;
        }

        /// <summary>
        /// Escreve o log de início de processamento no arquivo e retorna a mensagem de log escrita.
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de mensagem de início de processamento do ticket</returns>
        public string putStartProcessLog(string ticketName)
        {
            string message = logTicket.getStartProcessLog(ticketName);
            this.fm.writeFile(message);
            return message;
        }

        /// <summary>
        /// Escreve o log de término de processamento no arquivo e retorna a mensagem de log escrita.
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de mensagem de término de processamento do ticket</returns>
        public string putFinalProcessLog(string ticketName)
        {
            string message = logTicket.getFinalProcessLog(ticketName);
            this.fm.writeFile(message);
            this.fm.writeFile("");
            return message;
        }

        /// <summary>
        /// Escreve o log de ticket processado no arquivo e retorna a mensagem de log escrita.
        /// </summary>
        /// <param name="ticketName">nome do ticket</param>
        /// <returns>string de mensagem de log de ticket processado</returns>
        public string putProcessedTickedLog(string ticketName)
        {
            string message = logTicket.getProcessedTicketLog(ticketName);
            this.fm.writeFile(message);
            return message;
        }

       

        /// <summary>
        /// Fecha o arquivo de log
        /// </summary>
        public void endLog()
        {
            this.fm.closeWriteFile();
        }
    }
}
